Serializers or parallel-to-serial converters are widely used in serial communication in order to convert parallel data streams into serial data streams. A serializer is an important component for transmissions in such a communication network, and generally converts a low-speed parallel data signal into a high-speed serial data signal. Thus, in serial communication systems (e.g., 8b/10b), encoded parallel data is serialized into serial data streams, and transmitted. Typically, in such an exemplary system, the encoded data is a 10-bit parallel data word, and hence a tree-based serializer architecture cannot be employed.
FIG. 1A shows a conventional tree-based serializer architecture 100, and FIG. 1B shows a conventional clock division approach 150. In this approach, only last flip-flop (FF) 108 operates at the clock frequency (e.g., the serial output data rate), and the preceding stage (e.g., FFs 104 and 112, with inputs to multiplexer (mux) 106) operates at half the clock frequency (e.g., Cdiv2). The initial stage, including multiplexers 102 and 110, operates at one fourth the clock frequency (e.g., Cdiv4). As shown in FIG. 1B, Cdiv2 can be provided by divide-by-2 divider circuit 152, and Cdiv4 can be provided by divide-by-2 circuit 154. Such a tree-based architecture has the drawback of only being adaptable to receive parallel data of 2x bits, where x≧1. Thus, serializers used in serial communication that receive 10-bit parallel data words cannot use such a tree-based scheme directly.
FIG. 2A shows a conventional low-speed serializer portion 200, and FIG. 2B shows a clock divider portion 250, in a hybrid serializer architecture approach. The final 4-to-1 serializer stage (e.g., serializing bits D1[3:0]) may be implemented using a tree-based architecture (as shown in FIG. 1). Because a tree-based architecture can only be used with 2x parallel data bits, for a particular application (e.g., 10-bit parallel data), the serializer may be broken into two sections. One such section may be the low-speed section (e.g., 200), and the other section may be the high-speed section (e.g., tree-based). In such an approach, the low-speed section is typically implemented using relatively simple full-swing logic, whereas the high-speed section may utilize other high-speed circuitry (e.g., differential logic), and a design trade-off can be made based on power and performance.
In FIG. 2A, 10-bit parallel data (e.g., Datain[9:0]) is loaded into a 20-bit register formed by flip-flops FF[9:0] 202 in parallel with flip-flops FF[9:0] 204. Data registered at flip-flops FF[3 :0] 208 in 4-bit blocks is selected from the 20-bit register through a 20-to-4 multiplexer 206 and then fed into a 4-to-1 tree-based serializer, as discussed above. Also, 20-to-4 multiplexer 206 uses signal Sel[4:0] for selecting 4-bit blocks of data from the 20-bit register. In FIG. 2B, divide-by-2 divider 252 can be used to create clock Cdiv2 (e.g., for the tree-based section) from the input clock. Divide-by-2 divider 254 can be used to create clock Cdiv4 (e.g., for FF[3:0] 208) from Cdiv2. And, divide-by-5 divider 256 can provide clocks Cdiv10, Cdiv20 (e.g., for clocking parallel flip-flops 202 and 204), and signals Sel[4:0]). FIG. 3 shows associated timing waveforms for operation of the hybrid serializer of FIGS. 2A-2B.
Serializer circuits operate at the data transmission rate or “data rate,” and thus can consume a significant amount of power in a serial communication network. In addition, as the data rates of serial communication networks become higher (e.g., into the multi-gigahertz range), it may not be possible for conventional serializer architectures to provide sufficient serialization quality at low power.